package yl.hs.bmipfull.controllers.finance;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import yl.hs.bmipfull.controllers.ControllerBase;
import yl.hs.bmipfull.service.finance.IShipInvoiceRecordService;
import yl.hs.bmipfull.viewmodels.PageQuery;
import yl.hs.bmipfull.viewmodels.SubmitModel;
import yl.hs.bmipfull.viewmodels.WebResult;

/**
 * @author 张凯
 * @apiNote 开票记录-Controller
 * @since 2022/1/13 9:12 上午 创建
 */
@RequestMapping("/api/finance/invoice")
@RestController
@Api(tags = "财务管理——开票信息")
public class ShipInvoiceRecordController extends ControllerBase {

    @ApiOperation(value = "查询开票记录", notes = "查询开票记录")
    @RequestMapping(value = "", method = RequestMethod.POST)
    public WebResult queryList(@ApiParam(value = "查询条件") @RequestBody PageQuery pageQuery){
        try{
            return success("查询成功",service.queryList(pageQuery));
        }catch(Exception e){
            return error(e);
        }
    }

    @ApiOperation(value = "查询开票记录", notes = "分页查询开票记录")
    @RequestMapping(value = "/{rowNum}/{page}", method = RequestMethod.POST)
    public WebResult queryPage(@RequestBody PageQuery query,
                               @ApiParam(value = "页码") @PathVariable int page,
                               @ApiParam(value = "每页条数") @PathVariable int rowNum){
        try{
            var result=service.queryPage(query,rowNum,page);
            return success("ok",result);
        }catch(Exception ee){
            return error(ee);
        }
    }




    @ApiOperation(value = "查询开票记录", notes = "根据开票记录编号查询开票记录")
    @RequestMapping(value = "/{sn}", method = RequestMethod.GET)
    public WebResult findBySn(@ApiParam(value = "编号") @PathVariable String sn){
        return success("查询成功",service.findBySn(sn));
    }


    @ApiOperation(value = "保存开票记录", notes = "查询/更新开票记录信息")
    @RequestMapping(value = "", method = RequestMethod.PUT)
    public WebResult saveShipInvoiceRecord(@ApiParam(value = "提交信息") @RequestBody SubmitModel submitModel){
        Integer result;
        try{
            result=service.saveShipInvoiceRecord(submitModel.getData(),submitModel.getSn());
            if(result>0){
                return success("保存成功");
            }else{
                return fail("数据未保存");
            }
        }catch(Exception e){
            return error(e);
        }

    }

    @ApiOperation(value = "删除开票记录信息", notes = "根据开票记录编号删除系开票记录信息")
    @RequestMapping(path = "", method = RequestMethod.DELETE)
    public WebResult delete(@ApiParam(value = "开票记录编号", name = "sn", allowMultiple = true, required = true) @RequestParam("sn") String[]sn){
        if(service.delete(sn)>0){
            return success("删除成功");
        }else{
            return fail("删除失败");
        }
    }

    @Autowired
    public void setService(IShipInvoiceRecordService service) {
        this.service = service;
    }

    IShipInvoiceRecordService service;

}
